package dominioEntity;

import hbt.PersistentObject;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import dominioTO.ItemListaPreciosTO;
import dominioTO.ListaPreciosTO;
import dominioTO.ProveedorTO;

//ListaPrecio lado Servidor DAO (Persistencia
@Entity
public class ListaPrecios extends PersistentObject{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String codigoLista;
	private Date fechaDesde;
	private Integer diasVigencia;

	@LazyCollection(LazyCollectionOption.FALSE)
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name = "ListaPrecio_id")
	private List<ItemListaPrecios> itemsListaPecio;
	private String tipo;
	private boolean vigente;
	
	@LazyCollection(LazyCollectionOption.FALSE)
	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "proveedor_id")
	private Proveedor proveedor;
	
	private String condicionCompra;
	private String descuento30;
	private String descuento60;
	private String descuento90;
	
	
	public ListaPrecios() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	
	//Getters & Setters
	public String getCodigoLista() {
		return codigoLista;
	}
	public void setCodigoLista(String codigoLista) {
		this.codigoLista = codigoLista;
	}
	public Date getFechaDesde() {
		return fechaDesde;
	}
	public void setFechaDesde(Date fechaDesde) {
		this.fechaDesde = fechaDesde;
	}
	public Integer getDiasVigencia() {
		return diasVigencia;
	}
	public void setDiasVigencia(Integer diasVigencia) {
		this.diasVigencia = diasVigencia;
	}
	public List<ItemListaPrecios> getItemsListaPecio() {
		return itemsListaPecio;
	}
	public void setItemsListaPecio(List<ItemListaPrecios> itemsListaPecio) {
		this.itemsListaPecio = itemsListaPecio;
	}
	public String getTipo() {
		return tipo;
	}
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	public boolean isVigente() {
		return vigente;
	}
	public void setVigente(boolean vigente) {
		this.vigente = vigente;
	}
	public Proveedor getProveedor() {
		return proveedor;
	}
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}
	public String getCondicionCompra() {
		return condicionCompra;
	}
	public void setCondicionCompra(String condicionCompra) {
		this.condicionCompra = condicionCompra;
	}
	public String getDescuento30() {
		return descuento30;
	}
	public void setDescuento30(String descuento30) {
		this.descuento30 = descuento30;
	}
	public String getDescuento60() {
		return descuento60;
	}
	public void setDescuento60(String descuento60) {
		this.descuento60 = descuento60;
	}
	public String getDescuento90() {
		return descuento90;
	}
	public void setDescuento90(String descuento90) {
		this.descuento90 = descuento90;
	}
	
	public ListaPreciosTO getDTO()
	{
		ListaPreciosTO dto = new ListaPreciosTO();
		dto.setCodigoLista(codigoLista);
		dto.setFechaDesde(fechaDesde);
		dto.setDiasVigencia(diasVigencia);
		List<ItemListaPreciosTO> auxItemsLista = new ArrayList<ItemListaPreciosTO>();
		for( ItemListaPrecios item: itemsListaPecio)
		{
			auxItemsLista.add(item.getDTO());
		}
		dto.setItemsListaPecio(auxItemsLista);
		dto.setTipo(tipo);
		dto.setVigente(vigente);
		dto.setProveedor(proveedor.getDTO());
		dto.setCondicionCompra(condicionCompra);
		dto.setDescuento30(descuento30);
		dto.setDescuento60(descuento60);
		dto.setDescuento90(descuento90);
		return dto;
	}
	public ListaPreciosTO getDTO(ProveedorTO proveedorDTO)
	{
		ListaPreciosTO dto = new ListaPreciosTO();
		dto.setCodigoLista(codigoLista);
		dto.setFechaDesde(fechaDesde);
		dto.setDiasVigencia(diasVigencia);
		List<ItemListaPreciosTO> auxItemsLista = new ArrayList<ItemListaPreciosTO>();
		for( ItemListaPrecios item: itemsListaPecio)
		{
			auxItemsLista.add(item.getDTO());
		}
		dto.setItemsListaPecio(auxItemsLista);
		dto.setTipo(tipo);
		dto.setVigente(vigente);
		dto.setProveedor(proveedorDTO);
		dto.setCondicionCompra(condicionCompra);
		dto.setDescuento30(descuento30);
		dto.setDescuento60(descuento60);
		dto.setDescuento90(descuento90);
		return dto;
	}
		

}
